ETH_TOKEN_TO_ADDRESS = {
    "CCX": "0x1D6405138A335cE5FD7364086334EfB3E4F28B59",
    "ETH": "0x0000000000000000000000000000000000000000",
    "HYCO": "0x77F76483399Dc6328456105B1db23e2Aca455bf9",
    "ITAMCUBE": "0xBBaB3bDb291b0F22BC9881895ff488A5Db67BeC8",
    "JOY": "0x4E114d405b9Ba2F59524941733e505Ae03Fb1FB5",
    "LINK": "0x514910771AF9Ca656af840dff83E8264EcF986CA",
    "MASK": "0x69af81e73A73B40adF4f3d4223Cd9b1ECE623074",
    "MATIC": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",
    "ORB": "0x3C917054e03485808137EB306eAFA8DA0Ab695cd",
    "SHIBA": "0x95aD61b0a150d79219dCF64E1E6Cc01f0B64C4cE",
    "UNI": "0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984",
    "USDC": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
    "USDT": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
    "WBTC": "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599",
}


BSC_TOKEN_TO_ADDRESS = {
    "BNB": "0x0000000000000000000000000000000000000000",
    "BUSD": "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56",
    "CAKE": "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82",
    "CFX": "0x045c4324039dA91c52C55DF5D785385Aab073DcF",
    "ETH": "0x2170Ed0880ac9A755fd29B2688956BD959F933F8",
    "FNCY": "0x9B08f10D8C250714F6485212300a7B72f973F1Fd",
    "USDT": "0x55d398326f99059fF775485246999027B3197955",
}


TOKEN_TO_UNIT = {
    "BNB": "wei",
    "BUSD": "wei",
    "CAKE": "wei",
    "CCX": "wei",
    "CFX": "wei",
    "ETH": "wei",
    "FNCY": "wei",
    "HYCO": "wei",
    "JOY": "wei",
    "ITAMCUBE": 'wei',
    "LINK": "wei",
    "MASK": "wei",
    "MATIC": "wei",
    "ORB": "wei",
    "SHIBA": "wei",
    "UNI": "wei",
    "USDC": "microusdc",
    "USDT": "microusdt",
    "WBTC": "satoshi",
}


ERC20_ABI = """
[
    {
        "constant": true,
        "inputs": [],
        "name": "name",
        "outputs": [
            {
                "name": "",
                "type": "string"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            {
                "name": "_spender",
                "type": "address"
            },
            {
                "name": "_value",
                "type": "uint256"
            }
        ],
        "name": "approve",
        "outputs": [
            {
                "name": "",
                "type": "bool"
            }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "totalSupply",
        "outputs": [
            {
                "name": "",
                "type": "uint256"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            {
                "name": "_from",
                "type": "address"
            },
            {
                "name": "_to",
                "type": "address"
            },
            {
                "name": "_value",
                "type": "uint256"
            }
        ],
        "name": "transferFrom",
        "outputs": [
            {
                "name": "",
                "type": "bool"
            }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "decimals",
        "outputs": [
            {
                "name": "",
                "type": "uint8"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            {
                "name": "_owner",
                "type": "address"
            }
        ],
        "name": "balanceOf",
        "outputs": [
            {
                "name": "balance",
                "type": "uint256"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [],
        "name": "symbol",
        "outputs": [
            {
                "name": "",
                "type": "string"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "constant": false,
        "inputs": [
            {
                "name": "_to",
                "type": "address"
            },
            {
                "name": "_value",
                "type": "uint256"
            }
        ],
        "name": "transfer",
        "outputs": [
            {
                "name": "",
                "type": "bool"
            }
        ],
        "payable": false,
        "stateMutability": "nonpayable",
        "type": "function"
    },
    {
        "constant": true,
        "inputs": [
            {
                "name": "_owner",
                "type": "address"
            },
            {
                "name": "_spender",
                "type": "address"
            }
        ],
        "name": "allowance",
        "outputs": [
            {
                "name": "",
                "type": "uint256"
            }
        ],
        "payable": false,
        "stateMutability": "view",
        "type": "function"
    },
    {
        "payable": true,
        "stateMutability": "payable",
        "type": "fallback"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "name": "owner",
                "type": "address"
            },
            {
                "indexed": true,
                "name": "spender",
                "type": "address"
            },
            {
                "indexed": false,
                "name": "value",
                "type": "uint256"
            }
        ],
        "name": "Approval",
        "type": "event"
    },
    {
        "anonymous": false,
        "inputs": [
            {
                "indexed": true,
                "name": "from",
                "type": "address"
            },
            {
                "indexed": true,
                "name": "to",
                "type": "address"
            },
            {
                "indexed": false,
                "name": "value",
                "type": "uint256"
            }
        ],
        "name": "Transfer",
        "type": "event"
    }
]
"""


NODE_SERVER = {
    "ethereum": "https://mainnet.infura.io/v3/ae4830779490409da494b2b2cf31397d",
    "bsc": "https://red-dark-voice.bsc.quiknode.pro/c08980e1f26f6dbc6ff41ef2d46bc09a81b7b5e2/",
}
